Docker

您所在的位置:网站首页 docker mysql数据会保存下来吗 Docker

Docker

2022-12-23 19:41| 来源: 网络整理| 查看: 265

目录

一,宿主机与容器之间的文件拷贝

1.1 容器中怎么上传项目(文件)

1.2 从宿主机拷贝文件到容器

1.3 从容器中拷贝文件到宿主机

 二 数据卷

 三 数据卷容器

 四 Dockerfile

Dockerfile制作增强版

自定义centos 具备vim以及ifconfig

Dockerfile制作自定义tomcat

一,宿主机与容器之间的文件拷贝

引言:利用MySQL镜像安装MySQL服务

docker run -p 3307:3306 --name mysql1   -di -v /home/javaxl/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/javaxl/data/mysql/data/:/var/lib/mysql -v /home/javaxl/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

1.1 容器中怎么上传项目(文件)

将项目上传到tomcat的webapps中

 若没有tomcat可以先进行下载

下载tomcat

docker run -it --name tomcat3 tomcat:8 /bin/bash 

退出容器(不会停止容器 所以下一步查看的容器中有tomcat的话就不用再次运行了)

ctr+p+q

查看正在使用的容器

docker ps

使用过的容器

docker ps -a

运行tomcat容器

docker start tomcat3

进入容器

docker exec -it tomcat3 /bin/bash

进入webapps目录

cd webapps

1.2 从宿主机拷贝文件到容器

宿主机目录下的tomcat为手动提前备好的文件

 docker cp /javaxl/software/mydocker/apache-tomcat-8.5.20.tar.gz tomcat3:/usr/local/tomcat/webapps

1.3 从容器中拷贝文件到宿主机

再这之前时 已经在容器的tomcat/webapps目录下创建了一个111.log 文件

进入容器

docker exec -it tomcat3 /bin/bash

进入webapps目录

cd webapps

创建文件111.log

touch 111.log

模拟将日志文件移至外部的宿主机目录下的情况

但是这是比较麻烦的 而且做不到实时更新日志 只有拷贝过来时的日志

docker cp tomcat3:/usr/local/tomcat/webapps/111.log /javaxl/software/mydocker

 二 数据卷

将宿主机的目录与容器的目录进行挂载,实现数据共享

docker run -di --name c2 -v

/home/xl/data/          宿主机目录

:/home/may/data/     容器的指定目录

centos:7                    建一个centos:7的服务

我们正在使用的就是centos:7的服务 也就是说在centos:7 的服务下再建一个虚拟的centos:7的服务器

docker run -di --name c2 -v /home/xl/data/:/home/may/data/ centos:7        

 因为上传超时 截了超时的图 有点模糊还请见谅 

 结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会会被共享;

 三 数据卷容器

 docker run -di -v /home/javaxl/data/c4 --name c4 centos:7 docker run -di --volumes-from c4 --name c6 centos:7

 其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用

我们可以通过docker inspect查看容器的详细情况

docker inspect c4 docker inspect c6

 c4

 c6

会发现c4、c6目录挂载情况是一样的

结论:不管c4、c6在指定目录创建文件夹还是文件,都会会被共享;

四 Dockerfile Dockerfile制作增强版 自定义centos 具备vim以及ifconfig

举例 我们用下载的centos:7镜像 运行一个容器 是没有vim命令的 只有vi

所以我们可以自定义centos 具备vim以及ifconfig作用vi mycentosDockerfile

向 mycentosDockerfile 编辑内容

FROM centos:7         依靠centos:7 进行增强 MAINTAINER javaxl "[email protected]"          创造者备注 RUN yum -y install vim          下载vim命令 RUN yum install net-tools.x86_64 -y          下载 ifconfig命令 CMD /bin/bash         进入容器的方法

FROM centos:7 MAINTAINER javaxl "[email protected]" RUN yum -y install vim RUN yum install net-tools.x86_64 -y CMD /bin/bash

构建镜像

docker build -f mycentosDockerfile(若此处名为Dockerfile 则可省略) -t javaxl/centos:v1.0 .

docker build -f mycentosDockerfile -t javaxl/centos:v1.0 .

通过镜像运行一个容器进行测试

docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash

 成功创建!!!

Dockerfile制作自定义tomcat

 非自定义的tomcat不可访问

第一步:

vi mytomcatDockerfile

第二步:

向 mytomcatDockerfile 编辑内容

FROM centos:7 MAINTAINER javaxl "[email protected]"

ENV workerDir /home/javaxl/dockerfile/3 WORKDIR $workerDir

ADD jdk-8u151-linux-x64.tar.gz $workerDir COPY apache-tomcat-8.5.20.tar.gz $workerDir RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20

ENV JAVA_HOME $workerDir/jdk1.8.0_151 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20 ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib:$PATH

EXPOSE 8080 ENTRYPOINT ["/home/javaxl/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

注意其中的:

ADD jdk-8u151-linux-x64.tar.gz $workerDir 添加进入工作目录并解压 COPY apache-tomcat-8.5.20.tar.gz $workerDir 添加进工作目录不解压力 

以及准备jdk

第三步:

构建镜像

docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .

第四步:

通过镜像运行2个容器进行测试 

docker run -di --name mt1 -P javaxl/tomcat8:v1.0 docker run -di --name mt2 -P javaxl/tomcat8:v1.0

第五步:

浏览器输入 两个都可以访问

http://192.168.195.139:49153/ http://192.168.195.139:49154/

但是此jdk是不可控的 只做自定义tomcat演示 之后再为大家讲解如何让端口可控



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3